package com.hooya.fa.eu.biz.dao.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.hooya.fa.eu.api.bo.report.*;
import com.hooya.fa.eu.biz.dao.entity.StkOriginCollectSzz;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * @Description 1
 * @Author : Zongz
 * @Copyright Copyright (c) 豪雅集团
 * @Create 2023/12/1
 * @Version 1.0.0
 */
@Mapper
public interface StkOrigCollectSzzMapper extends BaseMapper<StkOriginCollectSzz> {

    int insertBatchSomeColumn(List<StkOriginCollectSzz> res);

    /**
     * 采购导出信息[同一张发票的sku信息都是一样，写法与python出入，但结果一致]
     *
     * @param startDate 开始时间
     * @param endDate   结束时间
     * @param belongs   货权
     * @return list
     */
    List<StkReportInfoBO> getBuyListByDate(@Param("startDate") String startDate, @Param("endDate") String endDate,
                                           @Param("belongs") String belongs);

    /**
     * 转运买家导出信息[同一张发票的sku信息都是一样，写法与python出入，但结果一致]
     *
     * @param startDate 开始时间
     * @param endDate   结束时间
     * @param belongs   货权
     * @param country   国家
     * @return list
     */
    List<StkReportInfoBO> getTransferFromListByDate(@Param("startDate") String startDate, @Param("endDate") String endDate,
                                                    @Param("belongs") String belongs, @Param("country") String country);

    /**
     * 根据类型和日期获取卖家导出信息[同一张发票的sku信息都是一样，写法与python出入，但结果一致]
     *
     * @param startDate 开始时间
     * @param endDate   结束时间
     * @param belongs   货权
     * @param country   国家
     * @return list
     */
    List<StkReportInfoBO> getToListByDateAndType(@Param("startDate") String startDate, @Param("endDate") String endDate,
                                                 @Param("belongs") String belongs, @Param("country") String country,
                                                 @Param("type") String type);

    /**
     * b2b买家导出信息[同一张发票的sku信息都是一样，写法与python出入，但结果一致]
     *
     * @param startDate 开始时间
     * @param endDate   结束时间
     * @param belongs   货权
     * @param country   国家
     * @return list
     */
    List<StkReportInfoBO> getB2BFromListByDate(@Param("startDate") String startDate, @Param("endDate") String endDate,
                                               @Param("belongs") String belongs, @Param("country") String country);


    /**
     * 根据条件获取货权为costway的b2c数据
     *
     * @param startDate 开始时间
     * @param endDate   结束时间
     * @return list
     */
    List<CostwayStkInfoBo> getB2CListByDate(@Param("startDate") String startDate, @Param("endDate") String endDate);

    /**
     * 根据条件获取货权为costway的除b2c数据
     *
     * @param startDate 开始时间
     * @param endDate   结束时间
     * @return list
     */
    List<CostwayStkInfoBo> getExcludeB2CListByDate(@Param("startDate") String startDate, @Param("endDate") String endDate);

    /**
     * 根据时间和货权获取采购（进仓）数据
     *
     * @param startDate 开始时间
     * @param endDate   结束时间
     * @param belongs   货权
     * @return list
     */
    List<ProfitCheckBO> getCgInListByDateAndBelongs(@Param("startDate") String startDate, @Param("endDate") String endDate,
                                                    @Param("belongs") String belongs);

    /**
     * 根据时间和货权获取报损（盘盈）进仓数据
     *
     * @param startDate 开始时间
     * @param endDate   结束时间
     * @param belongs   货权
     * @return list
     */
    List<ProfitCheckBO> getBsInListByDateAndBelongs(@Param("startDate") String startDate, @Param("endDate") String endDate,
                                                    @Param("belongs") String belongs);

    /**
     * 根据时间和货权获取b2b进仓数据
     *
     * @param startDate 开始时间
     * @param endDate   结束时间
     * @param belongs   货权
     * @return list
     */
    List<ProfitCheckBO> getB2BInListByDateAndBelongs(@Param("startDate") String startDate, @Param("endDate") String endDate,
                                                     @Param("belongs") String belongs);

    /**
     * 根据时间和货权获取转运进仓数据
     *
     * @param startDate 开始时间
     * @param endDate   结束时间
     * @param belongs   货权
     * @return list
     */
    List<ProfitCheckBO> getTransferInListByDateAndBelongs(@Param("startDate") String startDate, @Param("endDate") String endDate,
                                                          @Param("belongs") String belongs);

    /**
     * 根据条件获取出库数据
     *
     * @param startDate 开始时间
     * @param endDate   结束时间
     * @param belongs   货权
     * @param type      类型
     * @return list
     */
    List<BuyBO> getOutListByCondition(@Param("startDate") String startDate, @Param("endDate") String endDate,
                                      @Param("belongs") String belongs, @Param("type") String type);

    /**
     * 获取报损出库
     *
     * @param startDate 开始时间
     * @param endDate   结束时间
     * @param belongs   货权
     * @return list
     */
    List<OutBO> getBsOutList(@Param("startDate") String startDate, @Param("endDate") String endDate,
                             @Param("belongs") String belongs);

    /**
     * 获取b2b出库
     *
     * @param startDate 开始时间
     * @param endDate   结束时间
     * @param belongs   货权
     * @return list
     */
    List<OutBO> getB2bOutList(@Param("startDate") String startDate, @Param("endDate") String endDate,
                              @Param("belongs") String belongs);

    /**
     * 获取b2c出库
     *
     * @param startDate 开始时间
     * @param endDate   结束时间
     * @param belongs   货权
     * @return list
     */
    List<OutBO> getB2cOutList(@Param("startDate") String startDate, @Param("endDate") String endDate,
                              @Param("belongs") String belongs);
}
